local days = {
  "Chủ nhật",
  "Thứ hai",
  "Thứ ba",
  "Thứ tư",
  "Thứ năm",
  "Thứ sáu",
  "Thứ bảy"
}

local dayTimeRanges = {
  {0, 2, "đêm"},
  {3, 10, "sáng"},
  {11, 14, "trưa"},
  {15, 18, "chiều"},
  {19, 23, "tối"}
}

local d = tonumber(os.date("%d"))
local w = tonumber(os.date("%w"))
local m = tonumber(os.date("%m"))
local y = tonumber(os.date("%Y"))

local hour = tonumber(os.date("%H"))
local minute = tonumber(os.date("%M"))
local second = tonumber(os.date("%S"))

local timeStr = ""
for i, range in ipairs(dayTimeRanges) do
  if hour >= range[1] and hour <= range[2] then
    timeStr = range[3]
    break
  end
end

-- Tính số tuần của tháng và thêm vào chuỗi tuần
local week = math.ceil(d / 7)
local weekStr = " tuần thứ " .. week .. " của tháng " .. m 

local dateStr = "Hôm nay là " .. days[w+1] .. ", ngày " .. d .. weekStr .. ", năm " .. y .. "."
local timeStr = "Bây giờ là " .. hour .. " giờ " .. minute .. " phút " .. second .. " giây " .. timeStr .. "."

if service and service.speak then
  local result = dateStr .. " " .. timeStr
  service.speak(result)
end